今天就以 SimpleCommandLinePropertySource 為主,其中的字首Simple 代表一個簡單的字串陣列。
在 SimpleCommandLinePropertySource 之中,就有提及抽象類別 CommandLinePropertySource 的目的; 該抽象類別實作的目地(此處的實作就是SimpleCommandLinePropertySource)是提供最簡單可行解析指令列參數的方法。
所有(CommandLinePropertySource) 的實作面對的指令列參數都分成兩群,選項參數(option-arguments) 以及 非選項參數(non-option arguments) 。
選項參數(option-arguments) 在下達指令的當下透過兩個 - 帶出的參數,有如此的形式
—optionName[=optValue]
以下範例為官方提供的(有效)範例
—foo
—foo=
—foo=””
—foo=bar
—foo=”bar then baz”
—foo=bar,baz,biz
官方提供option-arguments 錯誤範例
-foo //只有一個減號
--foo bar //optName 和 Value 必須用等號連接,而且不得有空格
--foo = bar
--foo=bar --foo=baz --foo=biz // 選項名稱,只能出現一次,若有複數值得逗號相連出現
什麼是 non-option arguments ,簡言之就是凡事沒有雙減號開頭的Name 就是 non-option,而這類參數可以透過 CommandLineArgs.getNonOptionArgs() 取得 。
這裡的 CommandLineArgs 是一個類別,而該類別在 spring framework 3.0.6 仍保有,但在現今的
6.X.X 版本之中,已經看不見這個類別。
但如果你是從 SimpleCommandLinePropertySource 去搜尋 CommandLineArgs 的蹤跡的話,你會發現
CommandLinePropertySource<org.springframework.core.env.CommandLineArgs> 不段出現,如果這時候又從抽象類別 CommandLinePropertySource 去看的話,會從建構子中發現
CommandLinePropertySource(T source) Create a new CommandLinePropertySource having the default name "commandLineArgs" and backed by the given source object.
CommandLineArgs 並未消失,而是成為CommandLinePropertySource的實例之一。
參考資料
{官方} SimpleCommandLinePropertySource API
{官方} CommandLinePropertySource
{官方} CommandLineArgs 舊資料